package com.ly.gof.behavioral.interpreter;

import com.singularsys.jep.Jep;
import com.singularsys.jep.JepException;
import com.singularsys.jep.ParseException;

/**
 * @author liuyang
 * @des 在项目开发中，如果要对数据表达式进行分析与计算，无须再用解释器模式进行设计了，Java 提供了以下强大的数学公式解析器：Expression4J、MESP(Math Expression String Parser) 和 Jep 等，它们可以解释一些复杂的文法，功能强大，使用简单。
 *
 *   Jep 是 Java expression parser 的简称，即 Java 表达式分析器，它是一个用来转换和计算数学表达式的 Java 库。通过这个程序库，用户可以以字符串的形式输入一个任意的公式，然后快速地计算出其结果。而且 Jep 支持用户自定义变量、常量和函数，它包括许多常用的数学函数和常量。
 * @Version 1.0
 * @Date: 06/08/2021 10:26
 */
public class JepDemo {
    public static void main(String[] args) throws JepException {
        try {
            Jep jep = new Jep();
            //定义要计算的数据表达式
            String cklx = "本金*利率*时间";
            //给相关变量赋值
            jep.addVariable("本金", 10000);
            jep.addVariable("利率", 0.038);
            jep.addVariable("时间", 2);
            //解析表达式
            jep.parse(cklx);
            //计算
            Object accrual = jep.evaluate();
            System.out.println("存款利息：" + accrual);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}
